Application development tools (AD tools) are computer programs that aid developers in developing computer applications. When working with such tools, the developer creates an application employing some underlying programming model that will run on a target computing device, for a target user, or at a target location. The task of developing applications is complex, especially when developing applications that can run for a plurality of targets. A primary role of AD tool programming (and the underlying programming model) is to provide assistance in handling this complexity. For example, modern AD tools typically have a graphical user interface through which the developer interacts with the system, creating, modifying, testing, and deploying the application.
A commonly used programming model that helps deal with application complexity is called the “Model View Controller” (MVC) model. In the MVC model an application is decomposed into three parts: the “Model” which encapsulates the application logic and data, the “View” which encapsulates the part of the application visible to the end user, and the “Controller” which encapsulates the application control flow and connections between the model and the view. The flow aspects of the controller can be represented as a directed graph in which the nodes correspond to application states and the arcs correspond to transitions between states. An application state includes, but is not limited to, a presentation (e.g., a Web page) or a process (e.g., a purchase approval step within a workflow). Given this modeling, the flow control lends itself well to manipulation via a graphical editor. Use of the MVC programming model is known in the art, as are AD tools that support this model. In particular, AD tools that employ a graphical flow editor are known in the art.
Another field where control flow is used is in workflow systems and tools, such as the SAP Workflow Editor*, the Tallence Workflow Engine*, or the DataWorks Workflow Editor* (*denotes that the term or terms may be trademark(s) of the respective owner), where diagrams are used to describe states and state dependencies in a system or organization. Control flow is also employed in systems, such as that detailed in U.S. Pat. No. 6,212,672, of Keller, et al, entitled “Software Development System with an Executable Working Model in an Interpretable Intermediate Modeling Language,” in which a higher level intermediate representation is used to generate desired artifacts. Another usage is in hardware design systems, such as Translogic Ease*, where a state diagram captures the control flow of a system or subsystem.
Existing tools concentrate on developing a single application flow. When developing an application for multiple targets, such as target devices with different capabilities or target users in different roles (e.g., bank customer versus bank employee), the approaches known in the art include either creating a separate control flow for each target or having a single control flow shared by all targets. To create a separate flow for each target is highly development-intensive, while using a single control flow for all targets is less than optimal from a performance perspective. There is no known system or method in the art that supports development of a common control flow having variations for multiple targets.
With the emergence of pervasive computing, AD tools for building applications targeted at multiple computing devices, such as laptops, PDAs, cell phones, etc., have appeared in the last few years. In Microsoft's .NET Studio*, specifically in the Mobil Internet Tool Kit*, a developer is able to write an application once and run it on multiple devices by deploying the application to a server that adaptively renders the application based on the requesting device. However, the control flow through the application's presentation elements, such as pages, is common across all targets, and is not specified visually at a high-level.
Accordingly, for development of a single application intended to be run for multiple targets, there remains a need in the art for a flow editor that creates and maintains a common, target independent flow with target dependent specializations.
It is therefore an objective of the present invention to provide a system and method for creating a common flow having target-specific specialized flows.